package com.movisens.smartgattlib;

import java.util.Collection;
import java.util.UUID;

import com.movisens.smartgattlib.attributes.DefaultAttribute;
import com.movisens.smartgattlib.helper.Characteristic;
import com.movisens.smartgattlib.helper.UuidObjectMap;
import com.movisens.smartgattlib.helper.AbstractAttribute;
import com.movisens.smartgattlib.attributes.*;

public class Characteristics
{

	public static final Characteristic<DefaultAttribute> DEFAULT = new Characteristic<DefaultAttribute>("0000", "Default Characteristic", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LONGITUDE = new Characteristic<DefaultAttribute>("2aaf", "Longitude", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> MAGNETIC_FLUX_DENSITY_2D = new Characteristic<DefaultAttribute>("2aa0", "Magnetic Flux Density - 2D", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> MAGNETIC_FLUX_DENSITY_3D = new Characteristic<DefaultAttribute>("2aa1", "Magnetic Flux Density - 3D", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> AEROBIC_HEART_RATE_LOWER_LIMIT = new Characteristic<DefaultAttribute>("2a7e", "Aerobic Heart Rate Lower Limit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> AEROBIC_HEART_RATE_UPPER_LIMIT = new Characteristic<DefaultAttribute>("2a84", "Aerobic Heart Rate Upper Limit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> AEROBIC_THRESHOLD = new Characteristic<DefaultAttribute>("2a7f", "Aerobic Threshold", DefaultAttribute.class);
	public static final Characteristic<Age> AGE = new Characteristic<Age>("2a80", "Age", Age.class);
	public static final Characteristic<DefaultAttribute> AGGREGATE = new Characteristic<DefaultAttribute>("2a5a", "Aggregate", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ALERT_CATEGORY_ID = new Characteristic<DefaultAttribute>("2a43", "Alert Category ID", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ALERT_CATEGORY_ID_BIT_MASK = new Characteristic<DefaultAttribute>("2a42", "Alert Category ID Bit Mask", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ALERT_LEVEL = new Characteristic<DefaultAttribute>("2a06", "Alert Level", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ALERT_NOTIFICATION_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a44", "Alert Notification Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ALERT_STATUS = new Characteristic<DefaultAttribute>("2a3f", "Alert Status", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ALTITUDE = new Characteristic<DefaultAttribute>("2ab3", "Altitude", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ANAEROBIC_HEART_RATE_LOWER_LIMIT = new Characteristic<DefaultAttribute>("2a81", "Anaerobic Heart Rate Lower Limit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ANAEROBIC_HEART_RATE_UPPER_LIMIT = new Characteristic<DefaultAttribute>("2a82", "Anaerobic Heart Rate Upper Limit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ANAEROBIC_THRESHOLD = new Characteristic<DefaultAttribute>("2a83", "Anaerobic Threshold", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ANALOG = new Characteristic<DefaultAttribute>("2a58", "Analog", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ANALOG_OUTPUT = new Characteristic<DefaultAttribute>("2a59", "Analog Output", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> APPARENT_WIND_DIRECTION = new Characteristic<DefaultAttribute>("2a73", "Apparent Wind Direction", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> APPARENT_WIND_SPEED = new Characteristic<DefaultAttribute>("2a72", "Apparent Wind Speed", DefaultAttribute.class);
	public static final Characteristic<Appearance> APPEARANCE = new Characteristic<Appearance>("2a01", "Appearance", Appearance.class);
	public static final Characteristic<DefaultAttribute> BAROMETRIC_PRESSURE_TREND = new Characteristic<DefaultAttribute>("2aa3", "Barometric Pressure Trend", DefaultAttribute.class);
	public static final Characteristic<BatteryLevel> BATTERY_LEVEL = new Characteristic<BatteryLevel>("2a19", "Battery Level", BatteryLevel.class);
	public static final Characteristic<DefaultAttribute> BATTERY_LEVEL_STATE = new Characteristic<DefaultAttribute>("2a1b", "Battery Level State", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BATTERY_POWER_STATE = new Characteristic<DefaultAttribute>("2a1a", "Battery Power State", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BLOOD_PRESSURE_FEATURE = new Characteristic<DefaultAttribute>("2a49", "Blood Pressure Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BLOOD_PRESSURE_MEASUREMENT = new Characteristic<DefaultAttribute>("2a35", "Blood Pressure Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BODY_COMPOSITION_FEATURE = new Characteristic<DefaultAttribute>("2a9b", "Body Composition Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BODY_COMPOSITION_MEASUREMENT = new Characteristic<DefaultAttribute>("2a9c", "Body Composition Measurement", DefaultAttribute.class);
	public static final Characteristic<BodySensorLocation> BODY_SENSOR_LOCATION = new Characteristic<BodySensorLocation>("2a38", "Body Sensor Location", BodySensorLocation.class);
	public static final Characteristic<DefaultAttribute> BOND_MANAGEMENT_CONTROL_POINT = new Characteristic<DefaultAttribute>("2aa4", "Bond Management Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BOND_MANAGEMENT_FEATURE = new Characteristic<DefaultAttribute>("2aa5", "Bond Management Features", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BOOT_KEYBOARD_INPUT_REPORT = new Characteristic<DefaultAttribute>("2a22", "Boot Keyboard Input Report", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BOOT_KEYBOARD_OUTPUT_REPORT = new Characteristic<DefaultAttribute>("2a32", "Boot Keyboard Output Report", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> BOOT_MOUSE_INPUT_REPORT = new Characteristic<DefaultAttribute>("2a33", "Boot Mouse Input Report", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CGM_FEATURE = new Characteristic<DefaultAttribute>("2aa8", "CGM Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CGM_MEASUREMENT = new Characteristic<DefaultAttribute>("2aa7", "CGM Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CGM_SESSION_RUN_TIME = new Characteristic<DefaultAttribute>("2aab", "CGM Session Run Time", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CGM_SESSION_START_TIME = new Characteristic<DefaultAttribute>("2aaa", "CGM Session Start Time", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CGM_SPECIFIC_OPS_CONTROL_POINT = new Characteristic<DefaultAttribute>("2aac", "CGM Specific Ops Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CGM_STATUS = new Characteristic<DefaultAttribute>("2aa9", "CGM Status", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CROSS_TRAINER_DATA = new Characteristic<DefaultAttribute>("2ace", "Cross Trainer Data", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CSC_FEATURE = new Characteristic<DefaultAttribute>("2a5c", "CSC Feature", DefaultAttribute.class);
	public static final Characteristic<CscMeasurement> CSC_MEASUREMENT = new Characteristic<CscMeasurement>("2a5b", "CSC Measurement", CscMeasurement.class);
	public static final Characteristic<DefaultAttribute> CURRENT_TIME = new Characteristic<DefaultAttribute>("2a2b", "Current Time", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CYCLING_POWER_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a66", "Cycling Power Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CYCLING_POWER_FEATURE = new Characteristic<DefaultAttribute>("2a65", "Cycling Power Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CYCLING_POWER_MEASUREMENT = new Characteristic<DefaultAttribute>("2a63", "Cycling Power Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> CYCLING_POWER_VECTOR = new Characteristic<DefaultAttribute>("2a64", "Cycling Power Vector", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DATABASE_CHANGE_INCREMENT = new Characteristic<DefaultAttribute>("2a99", "Database Change Increment", DefaultAttribute.class);
	public static final Characteristic<DateOfBirth> DATE_OF_BIRTH = new Characteristic<DateOfBirth>("2a85", "Date of Birth", DateOfBirth.class);
	public static final Characteristic<DefaultAttribute> DATE_OF_THRESHOLD_ASSESSMENT = new Characteristic<DefaultAttribute>("2a86", "Date of Threshold Assessment", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DATE_TIME = new Characteristic<DefaultAttribute>("2a08", "Date Time", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DAY_DATE_TIME = new Characteristic<DefaultAttribute>("2a0a", "Day Date Time", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DAY_OF_WEEK = new Characteristic<DefaultAttribute>("2a09", "Day of Week", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DESCRIPTOR_VALUE_CHANGED = new Characteristic<DefaultAttribute>("2a7d", "Descriptor Value Changed", DefaultAttribute.class);
	public static final Characteristic<DeviceName> DEVICE_NAME = new Characteristic<DeviceName>("2a00", "Device Name", DeviceName.class);
	public static final Characteristic<DefaultAttribute> DEW_POINT = new Characteristic<DefaultAttribute>("2a7b", "Dew Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DIGITAL = new Characteristic<DefaultAttribute>("2a56", "Digital", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DIGITAL_OUTPUT = new Characteristic<DefaultAttribute>("2a57", "Digital Output", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> DST_OFFSET = new Characteristic<DefaultAttribute>("2a0d", "DST Offset", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ELEVATION = new Characteristic<DefaultAttribute>("2a6c", "Elevation", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> EMAIL_ADDRESS = new Characteristic<DefaultAttribute>("2a87", "Email Address", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> EXACT_TIME_100 = new Characteristic<DefaultAttribute>("2a0b", "Exact Time 100", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> EXACT_TIME_256 = new Characteristic<DefaultAttribute>("2a0c", "Exact Time 256", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FAT_BURN_HEART_RATE_LOWER_LIMIT = new Characteristic<DefaultAttribute>("2a88", "Fat Burn Heart Rate Lower Limit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FAT_BURN_HEART_RATE_UPPER_LIMIT = new Characteristic<DefaultAttribute>("2a89", "Fat Burn Heart Rate Upper Limit", DefaultAttribute.class);
	public static final Characteristic<FirmwareRevisionString> FIRMWARE_REVISION_STRING = new Characteristic<FirmwareRevisionString>("2a26", "Firmware Revision String", FirmwareRevisionString.class);
	public static final Characteristic<DefaultAttribute> FIRST_NAME = new Characteristic<DefaultAttribute>("2a8a", "First Name", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FITNESS_MACHINE_CONTROL_POINT = new Characteristic<DefaultAttribute>("2ad9", "Fitness Machine Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FITNESS_MACHINE_FEATURE = new Characteristic<DefaultAttribute>("2acc", "Fitness Machine Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FITNESS_MACHINE_STATUS = new Characteristic<DefaultAttribute>("2ada", "Fitness Machine Status", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FIVE_ZONE_HEART_RATE_LIMITS = new Characteristic<DefaultAttribute>("2a8b", "Five Zone Heart Rate Limits", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> FLOOR_NUMBER = new Characteristic<DefaultAttribute>("2ab2", "Floor Number", DefaultAttribute.class);
	public static final Characteristic<Gender> GENDER = new Characteristic<Gender>("2a8c", "Gender", Gender.class);
	public static final Characteristic<DefaultAttribute> GLUCOSE_FEATURE = new Characteristic<DefaultAttribute>("2a51", "Glucose Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> GLUCOSE_MEASUREMENT = new Characteristic<DefaultAttribute>("2a18", "Glucose Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> GLUCOSE_MEASUREMENT_CONTEXT = new Characteristic<DefaultAttribute>("2a34", "Glucose Measurement Context", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> GUST_FACTOR = new Characteristic<DefaultAttribute>("2a74", "Gust Factor", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HARDWARE_REVISION_STRING = new Characteristic<DefaultAttribute>("2a27", "Hardware Revision String", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HEART_RATE_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a39", "Heart Rate Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HEART_RATE_MAX = new Characteristic<DefaultAttribute>("2a8d", "Heart Rate Max", DefaultAttribute.class);
	public static final Characteristic<HeartRateMeasurement> HEART_RATE_MEASUREMENT = new Characteristic<HeartRateMeasurement>("2a37", "Heart Rate Measurement", HeartRateMeasurement.class);
	public static final Characteristic<DefaultAttribute> HEAT_INDEX = new Characteristic<DefaultAttribute>("2a7a", "Heat Index", DefaultAttribute.class);
	public static final Characteristic<Height> HEIGHT = new Characteristic<Height>("2a8e", "Height", Height.class);
	public static final Characteristic<DefaultAttribute> HID_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a4c", "HID Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HID_INFORMATION = new Characteristic<DefaultAttribute>("2a4a", "HID Information", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HIP_CIRCUMFERENCE = new Characteristic<DefaultAttribute>("2a8f", "Hip Circumference", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HTTP_CONTROL_POINT = new Characteristic<DefaultAttribute>("2aba", "HTTP Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HTTP_ENTITY_BODY = new Characteristic<DefaultAttribute>("2ab9", "HTTP Entity Body", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HTTP_HEADERS = new Characteristic<DefaultAttribute>("2ab7", "HTTP Headers", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HTTP_STATUS_CODE = new Characteristic<DefaultAttribute>("2ab8", "HTTP Status Code", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HTTPS_SECURITY = new Characteristic<DefaultAttribute>("2abb", "HTTPS Security", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> HUMIDITY = new Characteristic<DefaultAttribute>("2a6f", "Humidity", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> IEEE_11073_20601_REGULATORY_CERTIFICATION_DATA_LIST = new Characteristic<DefaultAttribute>("2a2a", "IEEE 11073-20601 Regulatory Certification Data List", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> INDOOR_BIKE_DATA = new Characteristic<DefaultAttribute>("2ad2", "Indoor Bike Data", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> INDOOR_POSITIONING_CONFIGURATION = new Characteristic<DefaultAttribute>("2aad", "Indoor Positioning Configuration", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> INTERMEDIATE_CUFF_PRESSURE = new Characteristic<DefaultAttribute>("2a36", "Intermediate Cuff Pressure", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> INTERMEDIATE_TEMPERATURE = new Characteristic<DefaultAttribute>("2a1e", "Intermediate Temperature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> IRRADIANCE = new Characteristic<DefaultAttribute>("2a77", "Irradiance", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LANGUAGE = new Characteristic<DefaultAttribute>("2aa2", "Language", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LAST_NAME = new Characteristic<DefaultAttribute>("2a90", "Last Name", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LATITUDE = new Characteristic<DefaultAttribute>("2aae", "Latitude", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LN_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a6b", "LN Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LN_FEATURE = new Characteristic<DefaultAttribute>("2a6a", "LN Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LOCAL_EAST_COORDINATE = new Characteristic<DefaultAttribute>("2ab1", "Local East Coordinate", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LOCAL_NORTH_COORDINATE = new Characteristic<DefaultAttribute>("2ab0", "Local North Coordinate", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LOCAL_TIME_INFORMATION = new Characteristic<DefaultAttribute>("2a0f", "Local Time Information", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LOCATION_AND_SPEED = new Characteristic<DefaultAttribute>("2a67", "Location and Speed Characteristic", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> LOCATION_NAME = new Characteristic<DefaultAttribute>("2ab5", "Location Name", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> MAGNETIC_DECLINATION = new Characteristic<DefaultAttribute>("2a2c", "Magnetic Declination", DefaultAttribute.class);
	public static final Characteristic<ManufacturerNameString> MANUFACTURER_NAME_STRING = new Characteristic<ManufacturerNameString>("2a29", "Manufacturer Name String", ManufacturerNameString.class);
	public static final Characteristic<DefaultAttribute> MAXIMUM_RECOMMENDED_HEART_RATE = new Characteristic<DefaultAttribute>("2a91", "Maximum Recommended Heart Rate", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> MEASUREMENT_INTERVAL = new Characteristic<DefaultAttribute>("2a21", "Measurement Interval", DefaultAttribute.class);
	public static final Characteristic<ModelNumberString> MODEL_NUMBER_STRING = new Characteristic<ModelNumberString>("2a24", "Model Number String", ModelNumberString.class);
	public static final Characteristic<DefaultAttribute> NAVIGATION = new Characteristic<DefaultAttribute>("2a68", "Navigation", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> NETWORK_AVAILABILITY = new Characteristic<DefaultAttribute>("2a3e", "Network Availability", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> NEW_ALERT = new Characteristic<DefaultAttribute>("2a46", "New Alert", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_ACTION_CONTROL_POINT = new Characteristic<DefaultAttribute>("2ac5", "Object Action Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_CHANGED = new Characteristic<DefaultAttribute>("2ac8", "Object Changed", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_FIRST_CREATED = new Characteristic<DefaultAttribute>("2ac1", "Object First-Created", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_ID = new Characteristic<DefaultAttribute>("2ac3", "Object ID", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_LAST_MODIFIED = new Characteristic<DefaultAttribute>("2ac2", "Object Last-Modified", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_LIST_CONTROL_POINT = new Characteristic<DefaultAttribute>("2ac6", "Object List Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_LIST_FILTER = new Characteristic<DefaultAttribute>("2ac7", "Object List Filter", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_NAME = new Characteristic<DefaultAttribute>("2abe", "Object Name", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_PROPERTIES = new Characteristic<DefaultAttribute>("2ac4", "Object Properties", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_SIZE = new Characteristic<DefaultAttribute>("2ac0", "Object Size", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OBJECT_TYPE = new Characteristic<DefaultAttribute>("2abf", "Object Type", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> OTS_FEATURE = new Characteristic<DefaultAttribute>("2abd", "OTS Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS = new Characteristic<DefaultAttribute>("2a04", "Peripheral Preferred Connection Parameters", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PERIPHERAL_PRIVACY_FLAG = new Characteristic<DefaultAttribute>("2a02", "Peripheral Privacy Flag", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PLX_CONTINUOUS_MEASUREMENT = new Characteristic<DefaultAttribute>("2a5f", "PLX Continuous Measurement Characteristic", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PLX_FEATURES = new Characteristic<DefaultAttribute>("2a60", "PLX Features", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PLX_SPOT_CHECK_MEASUREMENT = new Characteristic<DefaultAttribute>("2a5e", "PLX Spot-Check Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PNP_ID = new Characteristic<DefaultAttribute>("2a50", "PnP ID", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> POLLEN_CONCENTRATION = new Characteristic<DefaultAttribute>("2a75", "Pollen Concentration", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> POSITION_2D = new Characteristic<DefaultAttribute>("2a2f", "Position 2D", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> POSITION_3D = new Characteristic<DefaultAttribute>("2a30", "Position 3D", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> POSITION_QUALITY = new Characteristic<DefaultAttribute>("2a69", "Position Quality", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PRESSURE = new Characteristic<DefaultAttribute>("2a6d", "Pressure", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PROTOCOL_MODE = new Characteristic<DefaultAttribute>("2a4e", "Protocol Mode", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> PULSE_OXIMETRY_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a62", "Pulse Oximetry Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RAINFALL = new Characteristic<DefaultAttribute>("2a78", "Rainfall", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RECONNECTION_ADDRESS = new Characteristic<DefaultAttribute>("2a03", "Reconnection Address", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RECORD_ACCESS_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a52", "Record Access Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> REFERENCE_TIME_INFORMATION = new Characteristic<DefaultAttribute>("2a14", "Reference Time Information", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> REMOVABLE = new Characteristic<DefaultAttribute>("2a3a", "Removable", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> REPORT = new Characteristic<DefaultAttribute>("2a4d", "Report", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> REPORT_MAP = new Characteristic<DefaultAttribute>("2a4b", "Report Map", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RESOLVABLE_PRIVATE_ADDRESS_ONLY = new Characteristic<DefaultAttribute>("2ac9", "Resolvable Private Address Only", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RESTING_HEART_RATE = new Characteristic<DefaultAttribute>("2a92", "Resting Heart Rate", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RINGER_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a40", "Ringer Control point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RINGER_SETTING = new Characteristic<DefaultAttribute>("2a41", "Ringer Setting", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> ROWER_DATA = new Characteristic<DefaultAttribute>("2ad1", "Rower Data", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RSC_FEATURE = new Characteristic<DefaultAttribute>("2a54", "RSC Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> RSC_MEASUREMENT = new Characteristic<DefaultAttribute>("2a53", "RSC Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SC_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a55", "SC Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SCAN_INTERVAL_WINDOW = new Characteristic<DefaultAttribute>("2a4f", "Scan Interval Window", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SCAN_REFRESH = new Characteristic<DefaultAttribute>("2a31", "Scan Refresh", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SCIENTIFIC_TEMPERATURE_CELSIUS = new Characteristic<DefaultAttribute>("2a3c", "Scientific Temperature Celsius", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SECONDARY_TIME_ZONE = new Characteristic<DefaultAttribute>("2a10", "Secondary Time Zone", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SENSOR_LOCATION = new Characteristic<DefaultAttribute>("2a5d", "Sensor Location", DefaultAttribute.class);
	public static final Characteristic<SerialNumberString> SERIAL_NUMBER_STRING = new Characteristic<SerialNumberString>("2a25", "Serial Number String", SerialNumberString.class);
	public static final Characteristic<DefaultAttribute> SERVICE_CHANGED = new Characteristic<DefaultAttribute>("2a05", "Service Changed", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SERVICE_REQUIRED = new Characteristic<DefaultAttribute>("2a3b", "Service Required", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SOFTWARE_REVISION_STRING = new Characteristic<DefaultAttribute>("2a28", "Software Revision String", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SPORT_TYPE_FOR_AEROBIC_AND_ANAEROBIC_THRESHOLDS = new Characteristic<DefaultAttribute>("2a93", "Sport Type for Aerobic and Anaerobic Thresholds", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> STAIR_CLIMBER_DATA = new Characteristic<DefaultAttribute>("2ad0", "Stair Climber Data", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> STEP_CLIMBER_DATA = new Characteristic<DefaultAttribute>("2acf", "Step Climber Data", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> STRING_ = new Characteristic<DefaultAttribute>("2a3d", "String", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_HEART_RATE_RANGE = new Characteristic<DefaultAttribute>("2ad7", "Supported Heart Rate Range", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_INCLINATION_RANGE = new Characteristic<DefaultAttribute>("2ad5", "Supported Inclination Range", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_NEW_ALERT_CATEGORY = new Characteristic<DefaultAttribute>("2a47", "Supported New Alert Category", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_POWER_RANGE = new Characteristic<DefaultAttribute>("2ad8", "Supported Power Range", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_RESISTANCE_LEVEL_RANGE = new Characteristic<DefaultAttribute>("2ad6", "Supported Resistance Level Range", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_SPEED_RANGE = new Characteristic<DefaultAttribute>("2ad4", "Supported Speed Range", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SUPPORTED_UNREAD_ALERT_CATEGORY = new Characteristic<DefaultAttribute>("2a48", "Supported Unread Alert Category", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> SYSTEM_ID = new Characteristic<DefaultAttribute>("2a23", "System ID", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TDS_CONTROL_POINT = new Characteristic<DefaultAttribute>("2abc", "TDS Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TEMPERATURE = new Characteristic<DefaultAttribute>("2a6e", "Temperature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TEMPERATURE_CELSIUS = new Characteristic<DefaultAttribute>("2a1f", "Temperature Celsius", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TEMPERATURE_FAHRENHEIT = new Characteristic<DefaultAttribute>("2a20", "Temperature Fahrenheit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TEMPERATURE_MEASUREMENT = new Characteristic<DefaultAttribute>("2a1c", "Temperature Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TEMPERATURE_TYPE = new Characteristic<DefaultAttribute>("2a1d", "Temperature Type", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> THREE_ZONE_HEART_RATE_LIMITS = new Characteristic<DefaultAttribute>("2a94", "Three Zone Heart Rate Limits", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_ACCURACY = new Characteristic<DefaultAttribute>("2a12", "Time Accuracy", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_BROADCAST = new Characteristic<DefaultAttribute>("2a15", "Time Broadcast", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_SOURCE = new Characteristic<DefaultAttribute>("2a13", "Time Source", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_UPDATE_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a16", "Time Update Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_UPDATE_STATE = new Characteristic<DefaultAttribute>("2a17", "Time Update State", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_WITH_DST = new Characteristic<DefaultAttribute>("2a11", "Time with DST", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TIME_ZONE = new Characteristic<DefaultAttribute>("2a0e", "Time Zone", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TRAINING_STATUS = new Characteristic<DefaultAttribute>("2ad3", "Training Status", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TREADMILL_DATA = new Characteristic<DefaultAttribute>("2acd", "Treadmill Data", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TRUE_WIND_DIRECTION = new Characteristic<DefaultAttribute>("2a71", "True Wind Direction", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TRUE_WIND_SPEED = new Characteristic<DefaultAttribute>("2a70", "True Wind Speed", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TWO_ZONE_HEART_RATE_LIMIT = new Characteristic<DefaultAttribute>("2a95", "Two Zone Heart Rate Limit", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> TX_POWER_LEVEL = new Characteristic<DefaultAttribute>("2a07", "Tx Power Level", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> UNCERTAINTY = new Characteristic<DefaultAttribute>("2ab4", "Uncertainty", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> UNREAD_ALERT_STATUS = new Characteristic<DefaultAttribute>("2a45", "Unread Alert Status", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> URI = new Characteristic<DefaultAttribute>("2ab6", "URI", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> USER_CONTROL_POINT = new Characteristic<DefaultAttribute>("2a9f", "User Control Point", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> USER_INDEX = new Characteristic<DefaultAttribute>("2a9a", "User Index", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> UV_INDEX = new Characteristic<DefaultAttribute>("2a76", "UV Index", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> VO2_MAX = new Characteristic<DefaultAttribute>("2a96", "VO2 Max", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> WAIST_CIRCUMFERENCE = new Characteristic<DefaultAttribute>("2a97", "Waist Circumference", DefaultAttribute.class);
	public static final Characteristic<Weight> WEIGHT = new Characteristic<Weight>("2a98", "Weight", Weight.class);
	public static final Characteristic<DefaultAttribute> WEIGHT_MEASUREMENT = new Characteristic<DefaultAttribute>("2a9d", "Weight Measurement", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> WEIGHT_SCALE_FEATURE = new Characteristic<DefaultAttribute>("2a9e", "Weight Scale Feature", DefaultAttribute.class);
	public static final Characteristic<DefaultAttribute> WIND_CHILL = new Characteristic<DefaultAttribute>("2a79", "Wind Chill", DefaultAttribute.class);

	private static UuidObjectMap<Characteristic<? extends AbstractAttribute>> characteristics = new UuidObjectMap<Characteristic<? extends AbstractAttribute>>();

	static
	{
		characteristics.put(LONGITUDE);
		characteristics.put(MAGNETIC_FLUX_DENSITY_2D);
		characteristics.put(MAGNETIC_FLUX_DENSITY_3D);
		characteristics.put(AEROBIC_HEART_RATE_LOWER_LIMIT);
		characteristics.put(AEROBIC_HEART_RATE_UPPER_LIMIT);
		characteristics.put(AEROBIC_THRESHOLD);
		characteristics.put(AGE);
		characteristics.put(AGGREGATE);
		characteristics.put(ALERT_CATEGORY_ID);
		characteristics.put(ALERT_CATEGORY_ID_BIT_MASK);
		characteristics.put(ALERT_LEVEL);
		characteristics.put(ALERT_NOTIFICATION_CONTROL_POINT);
		characteristics.put(ALERT_STATUS);
		characteristics.put(ALTITUDE);
		characteristics.put(ANAEROBIC_HEART_RATE_LOWER_LIMIT);
		characteristics.put(ANAEROBIC_HEART_RATE_UPPER_LIMIT);
		characteristics.put(ANAEROBIC_THRESHOLD);
		characteristics.put(ANALOG);
		characteristics.put(ANALOG_OUTPUT);
		characteristics.put(APPARENT_WIND_DIRECTION);
		characteristics.put(APPARENT_WIND_SPEED);
		characteristics.put(APPEARANCE);
		characteristics.put(BAROMETRIC_PRESSURE_TREND);
		characteristics.put(BATTERY_LEVEL);
		characteristics.put(BATTERY_LEVEL_STATE);
		characteristics.put(BATTERY_POWER_STATE);
		characteristics.put(BLOOD_PRESSURE_FEATURE);
		characteristics.put(BLOOD_PRESSURE_MEASUREMENT);
		characteristics.put(BODY_COMPOSITION_FEATURE);
		characteristics.put(BODY_COMPOSITION_MEASUREMENT);
		characteristics.put(BODY_SENSOR_LOCATION);
		characteristics.put(BOND_MANAGEMENT_CONTROL_POINT);
		characteristics.put(BOND_MANAGEMENT_FEATURE);
		characteristics.put(BOOT_KEYBOARD_INPUT_REPORT);
		characteristics.put(BOOT_KEYBOARD_OUTPUT_REPORT);
		characteristics.put(BOOT_MOUSE_INPUT_REPORT);
		characteristics.put(CGM_FEATURE);
		characteristics.put(CGM_MEASUREMENT);
		characteristics.put(CGM_SESSION_RUN_TIME);
		characteristics.put(CGM_SESSION_START_TIME);
		characteristics.put(CGM_SPECIFIC_OPS_CONTROL_POINT);
		characteristics.put(CGM_STATUS);
		characteristics.put(CROSS_TRAINER_DATA);
		characteristics.put(CSC_FEATURE);
		characteristics.put(CSC_MEASUREMENT);
		characteristics.put(CURRENT_TIME);
		characteristics.put(CYCLING_POWER_CONTROL_POINT);
		characteristics.put(CYCLING_POWER_FEATURE);
		characteristics.put(CYCLING_POWER_MEASUREMENT);
		characteristics.put(CYCLING_POWER_VECTOR);
		characteristics.put(DATABASE_CHANGE_INCREMENT);
		characteristics.put(DATE_OF_BIRTH);
		characteristics.put(DATE_OF_THRESHOLD_ASSESSMENT);
		characteristics.put(DATE_TIME);
		characteristics.put(DAY_DATE_TIME);
		characteristics.put(DAY_OF_WEEK);
		characteristics.put(DESCRIPTOR_VALUE_CHANGED);
		characteristics.put(DEVICE_NAME);
		characteristics.put(DEW_POINT);
		characteristics.put(DIGITAL);
		characteristics.put(DIGITAL_OUTPUT);
		characteristics.put(DST_OFFSET);
		characteristics.put(ELEVATION);
		characteristics.put(EMAIL_ADDRESS);
		characteristics.put(EXACT_TIME_100);
		characteristics.put(EXACT_TIME_256);
		characteristics.put(FAT_BURN_HEART_RATE_LOWER_LIMIT);
		characteristics.put(FAT_BURN_HEART_RATE_UPPER_LIMIT);
		characteristics.put(FIRMWARE_REVISION_STRING);
		characteristics.put(FIRST_NAME);
		characteristics.put(FITNESS_MACHINE_CONTROL_POINT);
		characteristics.put(FITNESS_MACHINE_FEATURE);
		characteristics.put(FITNESS_MACHINE_STATUS);
		characteristics.put(FIVE_ZONE_HEART_RATE_LIMITS);
		characteristics.put(FLOOR_NUMBER);
		characteristics.put(GENDER);
		characteristics.put(GLUCOSE_FEATURE);
		characteristics.put(GLUCOSE_MEASUREMENT);
		characteristics.put(GLUCOSE_MEASUREMENT_CONTEXT);
		characteristics.put(GUST_FACTOR);
		characteristics.put(HARDWARE_REVISION_STRING);
		characteristics.put(HEART_RATE_CONTROL_POINT);
		characteristics.put(HEART_RATE_MAX);
		characteristics.put(HEART_RATE_MEASUREMENT);
		characteristics.put(HEAT_INDEX);
		characteristics.put(HEIGHT);
		characteristics.put(HID_CONTROL_POINT);
		characteristics.put(HID_INFORMATION);
		characteristics.put(HIP_CIRCUMFERENCE);
		characteristics.put(HTTP_CONTROL_POINT);
		characteristics.put(HTTP_ENTITY_BODY);
		characteristics.put(HTTP_HEADERS);
		characteristics.put(HTTP_STATUS_CODE);
		characteristics.put(HTTPS_SECURITY);
		characteristics.put(HUMIDITY);
		characteristics.put(IEEE_11073_20601_REGULATORY_CERTIFICATION_DATA_LIST);
		characteristics.put(INDOOR_BIKE_DATA);
		characteristics.put(INDOOR_POSITIONING_CONFIGURATION);
		characteristics.put(INTERMEDIATE_CUFF_PRESSURE);
		characteristics.put(INTERMEDIATE_TEMPERATURE);
		characteristics.put(IRRADIANCE);
		characteristics.put(LANGUAGE);
		characteristics.put(LAST_NAME);
		characteristics.put(LATITUDE);
		characteristics.put(LN_CONTROL_POINT);
		characteristics.put(LN_FEATURE);
		characteristics.put(LOCAL_EAST_COORDINATE);
		characteristics.put(LOCAL_NORTH_COORDINATE);
		characteristics.put(LOCAL_TIME_INFORMATION);
		characteristics.put(LOCATION_AND_SPEED);
		characteristics.put(LOCATION_NAME);
		characteristics.put(MAGNETIC_DECLINATION);
		characteristics.put(MANUFACTURER_NAME_STRING);
		characteristics.put(MAXIMUM_RECOMMENDED_HEART_RATE);
		characteristics.put(MEASUREMENT_INTERVAL);
		characteristics.put(MODEL_NUMBER_STRING);
		characteristics.put(NAVIGATION);
		characteristics.put(NETWORK_AVAILABILITY);
		characteristics.put(NEW_ALERT);
		characteristics.put(OBJECT_ACTION_CONTROL_POINT);
		characteristics.put(OBJECT_CHANGED);
		characteristics.put(OBJECT_FIRST_CREATED);
		characteristics.put(OBJECT_ID);
		characteristics.put(OBJECT_LAST_MODIFIED);
		characteristics.put(OBJECT_LIST_CONTROL_POINT);
		characteristics.put(OBJECT_LIST_FILTER);
		characteristics.put(OBJECT_NAME);
		characteristics.put(OBJECT_PROPERTIES);
		characteristics.put(OBJECT_SIZE);
		characteristics.put(OBJECT_TYPE);
		characteristics.put(OTS_FEATURE);
		characteristics.put(PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS);
		characteristics.put(PERIPHERAL_PRIVACY_FLAG);
		characteristics.put(PLX_CONTINUOUS_MEASUREMENT);
		characteristics.put(PLX_FEATURES);
		characteristics.put(PLX_SPOT_CHECK_MEASUREMENT);
		characteristics.put(PNP_ID);
		characteristics.put(POLLEN_CONCENTRATION);
		characteristics.put(POSITION_2D);
		characteristics.put(POSITION_3D);
		characteristics.put(POSITION_QUALITY);
		characteristics.put(PRESSURE);
		characteristics.put(PROTOCOL_MODE);
		characteristics.put(PULSE_OXIMETRY_CONTROL_POINT);
		characteristics.put(RAINFALL);
		characteristics.put(RECONNECTION_ADDRESS);
		characteristics.put(RECORD_ACCESS_CONTROL_POINT);
		characteristics.put(REFERENCE_TIME_INFORMATION);
		characteristics.put(REMOVABLE);
		characteristics.put(REPORT);
		characteristics.put(REPORT_MAP);
		characteristics.put(RESOLVABLE_PRIVATE_ADDRESS_ONLY);
		characteristics.put(RESTING_HEART_RATE);
		characteristics.put(RINGER_CONTROL_POINT);
		characteristics.put(RINGER_SETTING);
		characteristics.put(ROWER_DATA);
		characteristics.put(RSC_FEATURE);
		characteristics.put(RSC_MEASUREMENT);
		characteristics.put(SC_CONTROL_POINT);
		characteristics.put(SCAN_INTERVAL_WINDOW);
		characteristics.put(SCAN_REFRESH);
		characteristics.put(SCIENTIFIC_TEMPERATURE_CELSIUS);
		characteristics.put(SECONDARY_TIME_ZONE);
		characteristics.put(SENSOR_LOCATION);
		characteristics.put(SERIAL_NUMBER_STRING);
		characteristics.put(SERVICE_CHANGED);
		characteristics.put(SERVICE_REQUIRED);
		characteristics.put(SOFTWARE_REVISION_STRING);
		characteristics.put(SPORT_TYPE_FOR_AEROBIC_AND_ANAEROBIC_THRESHOLDS);
		characteristics.put(STAIR_CLIMBER_DATA);
		characteristics.put(STEP_CLIMBER_DATA);
		characteristics.put(STRING_);
		characteristics.put(SUPPORTED_HEART_RATE_RANGE);
		characteristics.put(SUPPORTED_INCLINATION_RANGE);
		characteristics.put(SUPPORTED_NEW_ALERT_CATEGORY);
		characteristics.put(SUPPORTED_POWER_RANGE);
		characteristics.put(SUPPORTED_RESISTANCE_LEVEL_RANGE);
		characteristics.put(SUPPORTED_SPEED_RANGE);
		characteristics.put(SUPPORTED_UNREAD_ALERT_CATEGORY);
		characteristics.put(SYSTEM_ID);
		characteristics.put(TDS_CONTROL_POINT);
		characteristics.put(TEMPERATURE);
		characteristics.put(TEMPERATURE_CELSIUS);
		characteristics.put(TEMPERATURE_FAHRENHEIT);
		characteristics.put(TEMPERATURE_MEASUREMENT);
		characteristics.put(TEMPERATURE_TYPE);
		characteristics.put(THREE_ZONE_HEART_RATE_LIMITS);
		characteristics.put(TIME_ACCURACY);
		characteristics.put(TIME_BROADCAST);
		characteristics.put(TIME_SOURCE);
		characteristics.put(TIME_UPDATE_CONTROL_POINT);
		characteristics.put(TIME_UPDATE_STATE);
		characteristics.put(TIME_WITH_DST);
		characteristics.put(TIME_ZONE);
		characteristics.put(TRAINING_STATUS);
		characteristics.put(TREADMILL_DATA);
		characteristics.put(TRUE_WIND_DIRECTION);
		characteristics.put(TRUE_WIND_SPEED);
		characteristics.put(TWO_ZONE_HEART_RATE_LIMIT);
		characteristics.put(TX_POWER_LEVEL);
		characteristics.put(UNCERTAINTY);
		characteristics.put(UNREAD_ALERT_STATUS);
		characteristics.put(URI);
		characteristics.put(USER_CONTROL_POINT);
		characteristics.put(USER_INDEX);
		characteristics.put(UV_INDEX);
		characteristics.put(VO2_MAX);
		characteristics.put(WAIST_CIRCUMFERENCE);
		characteristics.put(WEIGHT);
		characteristics.put(WEIGHT_MEASUREMENT);
		characteristics.put(WEIGHT_SCALE_FEATURE);
		characteristics.put(WIND_CHILL);
	}
	
	/**
	 * Get all Characteristics.
	 *
	 * @return all available Characteristics
	 */
	public static Collection<Characteristic<? extends AbstractAttribute>> getCharacteristics()
	{
		return characteristics.getValues();
	}
	
	/**
	 * Looks up the characteristic for the given UUID. If the UUID is not found, a lookup in the smartgattlib is performed.
	 * 
	 * @param uuid the UUID to look for
	 * @return the corresponding characteristic or the DEFAULT characteristic of smartgattlib if UUID is not found
	 */
	public static Characteristic<? extends AbstractAttribute> lookup(UUID uuid)
	{
		Characteristic<? extends AbstractAttribute> result = characteristics.get(uuid);
		return result == null ? DEFAULT : result;
	}

}
